package com.study.d012Components;

import java.io.File;
import java.io.FileInputStream;

import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelReader;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

/** Image用于加载图片，  ImageView用户显示图片
*@description
*@author xtayhame
*date 2020年3月7日
*version
*since v1.0
*/
public class ImageMain2 extends Application{
	public static void main(String[] args) {
		launch(args);
	}

	@Override
	public void start(Stage stage) throws Exception {
		AnchorPane anchorPane = new AnchorPane();

		Image image = null;
		//加载方式1
		image = new Image(new FileInputStream(new File("E:\\javafxworkspace\\lianxidemo\\src\\image\\timg.gif")));
		//加载方式2
		//注意：url参数如果为本地文件，则需要加file:前缀
		image = new Image("file:E:\\javafxworkspace\\lianxidemo\\src\\image\\日历.jpg");

		//加载方式3 加载网络图片
		image = new Image("http://pic1.win4000.com/tj/2019-09-21/5d85cb123c076.jpg");

		//加载方式4  延时加载
		image = new Image("http://pic1.win4000.com/tj/2019-09-21/5d85cb123c076.jpg", true);

		image = new Image("/image/日历.jpg", 600, 600, true, true, false);
		System.out.println("获取图片设置的宽："+image.getRequestedWidth());
		System.out.println("获取图片设置的高："+image.getRequestedHeight());
		System.out.println();
		//获取图片等比例缩放后的实际宽和高， 如果设置为延时加载，则这两个值都为0 ,
		System.out.println("图片的实际高"+image.getWidth());
		System.out.println("图片的实际高"+image.getHeight());


		//如果是等比例缩放，如何获取缩放后的宽或者搞？
		//注意Image中可以设置宽和高，ImageView中也可以设置宽和高，如何image中的宽和高 低于ImageView中的宽和高，则图片会失真
		image = new Image("/image/日历.jpg");


		ImageView iv = new ImageView(image);
		//设置等比例缩放后为true，则默认会根据宽和高来缩放对应的高和宽
		iv.setPreserveRatio(true);
		iv.setFitHeight(600);

		//设置圆角
		Rectangle rct = new Rectangle(600, 600);
		rct.setArcHeight(50);
		rct.setArcWidth(50);
		iv.setClip(rct);

		anchorPane.getChildren().add(iv);

		System.out.println("缩放后的宽："+iv.getFitHeight());
		System.out.println("缩放后的宽："+ iv.getFitWidth());  //这样获取的值是0
		System.out.println("缩放后的宽："+ iv.prefWidth(-1));




		stage.setScene(new Scene(anchorPane, 800, 600));
		stage.show();


		//获取颜色
		PixelReader pixelReader= image.getPixelReader();
		Color color= pixelReader.getColor(0, 1);
		System.out.println("R="+color.getRed() * 255 + " G="+color.getGreen()  * 255+ "  B="+color.getBlue() * 255);

	/*	image.errorProperty();  //监听图片加载错误
		image.exceptionProperty();  //监听图片加载异常
		image.progressProperty();   //监听图片加载进度
*/
	}


}
